home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1993-11-04 | 7.2 KB | 156 lines |
- DEFINITION MODULE MyMathLibLong;
- (*
- Created: 17.11.87
- Changed: 25.1.88/10.02.88/23.8.88/29.9.88 by
- Stefan Salewski
- Stolper Weg 3
- 2160 Stade West-Germany
- Tel: 04141/61130
-
- Note: compiled with AMIGA Modula-2 System by AMSoft from 5.5.88
-
- This Module may be freely copied. But please
- leave my name in. Thanks....Stefan
- *)
-
- CONST
- Pi=3.141592653589793;
- PiHalbe=Pi*0.5;
- E=2.7182818284590452;
- TYPE AngleUnit=(rad,deg,gon);
- VAR
- unit:AngleUnit; (* Einheit, die bei trigonomischen Berechnungen
- verwendet wird. Voreinstellung: unit:=rad
- Soll statt in Bogenmass in Grad oder Neugrad
- gerechnet werden, so muss unit entsprechend
- gesetzt werden *)
- errorNumber:CARDINAL;(*Kann zur Ermittlung eines Fehlers verwendet werden
- Jetzt wird errorNumber nur noch gesetzt, wenn
- Fehler auftreten, das setzen von errornumber auf
- 0 durch die Funktionsprozeduren entfaellt.
- Dadurch wird verhindert, das errorNumber z.B. nach
- folgender Berechnung den falschen Wert 0 hat
- sqr(sqrt(-4))
- Wenn man Fehler erwartet, muss man also vor
- Berechnungen errorNumber auf 0 setzen und
- nach der Berechnung abfragen. Bei laengeren
- ausdruecken erhaelt man immer die Nummer des
- letzten Fehlers.
- *)
- epsilon:LONGREAL; (* Bestimmt die Genauigkeit der Berechnung von sin,
- exp,ln usw. Voreistellung: epsilon:=1.0E-20 entspricht
- maximaler Genauigkeit,also mindestens 14 Dezimalstellen
- epsilon kann fuer groessere Geschwindigkeit bis auf
- 1.0E-14 vergroessert werden, dann sind noch etwa 10
- Stellen korrekt, was der Rechnengenauigkeit von dem
- Standartmodul MathLibLong entspricht *)
-
- (*
- Die Zahlen zwischen '*' und ':' bezeichen jeweils den Wert, den errorNumber
- bekommt,wenn ein Fehler auftritt. FormelAusFText liefert dazu den Fehlertext.
- *)
-
- PROCEDURE neutraleFunc(x:LONGREAL):LONGREAL;
- (* Gibt x unveraendert zurueck *)
-
- PROCEDURE abs(x:LONGREAL):LONGREAL;
- (* entspricht ABS(x), kann aber als Funktion uebergeben werden *)
-
- PROCEDURE fac(x:LONGREAL):LONGREAL;
- (* Fakultaet fuer ganze Zahlen 0 <= n <= 170 *)
- (*75:Argument zu gross (x<710 *)
- (*76:fac(x) undef fuer x<0 *)
- (*77:fac(x) nur def. fuer x ganz *)
-
- PROCEDURE sqr(x:LONGREAL):LONGREAL;
- (* Quadrat x:=x*x *)
- (* 72:Argument >= 1E154 *)
-
- PROCEDURE power(x,y:LONGREAL):LONGREAL;
- (* Raise x to the y th power *)
- (* 3:0^negative Zahl ist undefiniert *)
- (* 4:Neg.Zahl hoch gebr.Zahl ist undefiniert*)
-
- PROCEDURE tan(x:LONGREAL):LONGREAL;
- (* Tangens = sin(x)/cos(x) *)
- (* 5:tan(n*(Pi/2) ist undefiniert *)
-
- PROCEDURE sin(x:LONGREAL):LONGREAL;
- (* Sinus *)
-
- PROCEDURE cos(x:LONGREAL):LONGREAL;
- (* Cosinus *)
-
- PROCEDURE cot(x:LONGREAL):LONGREAL;
- (* Kotangens = 1/tan(x) *)
- (* 6:cot(n*Pi ist undefiniert *)
-
- PROCEDURE sec(x:LONGREAL):LONGREAL;
- (* Sekans = 1/cos(x) *)
- (* 7:sec hat Pol bei x=n*Pi/2 *)
-
- PROCEDURE cosec(x:LONGREAL):LONGREAL;
- (* Kosekans =1/sin(x) *)
- (* 8:cosec hat Pol bei x=n*Pi *)
-
- PROCEDURE arcsin(x:LONGREAL):LONGREAL;
- (* ArcusSinus= Umkehrfunktion des Sinus -1<= x <= +1 *)
- (* 9:arcsin(x)undefiniert fuer |x|>0 *)
-
- PROCEDURE arccos(x:LONGREAL):LONGREAL;
- (* ArcusCosinus = Umkehrfunktion des Cosinus -1 <=x <= +1 *)
- (* 10:arccos(x) undefiniert fuer |x|>0 *)
-
- PROCEDURE arctan(x:LONGREAL):LONGREAL;
- (* ArcusTangen = Umkehrfunktion des Tangens *)
-
- PROCEDURE arccot(x:LONGREAL):LONGREAL;
- (* ArcusKotangens = Umkehrfunktion des Kotangens *)
-
- PROCEDURE exp(x:LONGREAL):LONGREAL;
- (* Exponentialfunktion *)
- (* 11:exp(x) zu gross fuer x>710 *)
-
- PROCEDURE ln(x:LONGREAL):LONGREAL;
- (* Natuerlicher Logarithmus zur Basis e=2.7182818 *)
- (* 12:ln(x) undefiniert fuer x<=0 *)
-
- PROCEDURE log(x:LONGREAL):LONGREAL;
- (* Logarithmus zur Basis 10 *)
- (* 13:log(x) undefiniert fuer x<=0 *)
-
- PROCEDURE sinh(x:LONGREAL):LONGREAL;
- (* Sinus Hyperbolicus bzw. HyperbelSinus *)
-
- PROCEDURE cosh(x:LONGREAL):LONGREAL;
- (* Cosinus Hyperbolicus bzw. HyperbelCosinus *)
-
- PROCEDURE tanh(x:LONGREAL):LONGREAL;
- (* Tangens Hyperbolicus bzw. HyperbelTangens *)
-
- PROCEDURE coth(x:LONGREAL):LONGREAL;
- (* Cotanges Hyperbolicus bzw. HyperbelCotangens *)
- (* 14:coth(x) hat Pol bei x=0 *)
-
- PROCEDURE arsinh(x:LONGREAL):LONGREAL;
- (* AreaSinus = Umkehrfunktion von sinh(x) *)
-
- PROCEDURE arcosh(x:LONGREAL):LONGREAL;
- (* AreaCosinus = Umkehrfunktion von cosh(x) *)
- (* 15:arcosh(x) undefiniert fuer x>1 *)
-
- PROCEDURE artanh(x:LONGREAL):LONGREAL;
- (* AreaTangens = Umkehrfunktion tanh(x) *)
- (* 16:artanh(x) undefi fuer |x|>=1 *)
-
- PROCEDURE sqrt(x:LONGREAL):LONGREAL;
- (* AreaTangens = Umkehrfunktion tanh(x) *)
- (* 17:sqrt(x) undefiniert fuer x<0 *)
- PROCEDURE arcoth(x:LONGREAL):LONGREAL;
- (* Areacotangens = Umkehrfunktion von coth *)
- (* 19:arctan(x) undefiniert fuer |x|<=1.0 *)
- PROCEDURE int(x:LONGREAL):LONGREAL;
- (* Liefert den ganzaligen Anteil von x. int(4.3)=4; int(-4.3)=-4 *)
- (* 20:int(x) |x| muss kleiner als 2147483648 sein *)
- END MyMathLibLong.def
-